package com.qf.java2201.listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.qf.java2201.dto.NoticeExcelDto;
import com.qf.java2201.pojo.Notice;
import com.qf.java2201.service.NoticeService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

@Component
@Scope("prototype")  //意 这里要设置成多例模式
public class WebNoticeListener extends AnalysisEventListener<NoticeExcelDto> {

    @Autowired
    private NoticeService noticeService;

    private  List<Notice> notices = new ArrayList<>();

    @Override
    public void invoke(NoticeExcelDto data, AnalysisContext context) {
        //easyexcel 把读取到数据 封装到了 dto中
        System.out.println(data);

        //创建一个  pojo
        Notice notice = new Notice();
        //把 dto 数据 封装到  pojo 中
        BeanUtils.copyProperties(data,notice);

        //每读取一行 excel 都会得到 一个 dto  ，把dto转为 pojo 然后放入 集合
        notices.add(notice);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {

        System.out.println(notices);

        //把集合中的数据 存入到 数据库
        noticeService.addNoticeList(notices);
        notices.clear();
    }
}
